# include <bits/stdc++.h>
# define N 100005
using namespace std;
int testid,n,q;
int x[N],y[N],X[N],Y[N];
mt19937 Rnd(time(0));
int get()
{
    return Rnd()%1000000000+1;
}
int l[N],r[N];
vector<int> v[N];
vector<pair<int,int>> Q[N];
struct node
{
    int y,l,r,id;
    bool op;
    bool operator <(const node &a)const
    {
        if(y==a.y)
            return id<a.id;
        return y<a.y;
    }
};
set<node> s;
node a[N];
int cnt;
long long ans[N];
int numx[N<<1],tot;
struct Segment_Tree
{
    int sum[N<<3],ans[N<<3];
    int tag[N<<3];
    void build(int now,int l,int r)
    {
        if(l==r)
        {
            sum[now]=numx[l+1]-numx[l];
            return ;
        }
        int mid=l+r>>1;
        build(now<<1,l,mid);
        build(now<<1|1,mid+1,r);
        sum[now]=sum[now<<1]+sum[now<<1|1];
    }
    void add(int now,int l,int r,int L,int R)
    {
        if(L<=l && r<=R)
        {
            tag[now]++;
            ans[now]=sum[now];
            return ;
        }
        int mid=l+r>>1;
        if(L<=mid)
            add(now<<1,l,mid,L,R);
        if(R>mid)
            add(now<<1|1,mid+1,r,L,R);
        (!tag[now]) && (ans[now]=ans[now<<1]+ans[now<<1|1]);
    }
    void del(int now,int l,int r,int L,int R)
    {
        if(L<=l && r<=R)
        {
            tag[now]--;
            ans[now]=(tag[now] || l==r)?sum[now]*(!!tag[now]):ans[now<<1]+ans[now<<1|1];
            return ;
        }
        int mid=l+r>>1;
        if(L<=mid)
            del(now<<1,l,mid,L,R);
        if(R>mid)
            del(now<<1|1,mid+1,r,L,R);
        (!tag[now]) && (ans[now]=ans[now<<1]+ans[now<<1|1]);
    }
}T;
int totot=0;
long long solve()
{
    long long ans=0;
    totot+=cnt;
    for(int i=1;i<=cnt;i++)
    {
        if(i!=1)
            ans+=1ll*(a[i].y-a[i-1].y)*T.ans[1];
        if(a[i].op)
            T.add(1,1,tot-1,a[i].l,a[i].r);
        else
            T.del(1,1,tot-1,a[i].l,a[i].r);
    }
    return ans;
}
int main()
{
    freopen("dierti.in","r",stdin);
    freopen("dierti.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>testid>>n>>q;
    for(int i=1;i<=n;i++)
        cin>>x[i]>>y[i]>>X[i]>>Y[i],numx[++tot]=x[i],numx[++tot]=X[i];
    sort(numx+1,numx+tot+1);
    tot=unique(numx+1,numx+tot+1)-numx-1;
    T.build(1,1,tot-1);
    for(int i=1;i<=n;i++)
    {
        x[i]=lower_bound(numx+1,numx+tot+1,x[i])-numx;
        X[i]=lower_bound(numx+1,numx+tot+1,X[i])-numx-1;
    }
    for(int i=1;i<=n;i++)
    {
        l[i]=0;
        int nowx=x[i],nowy=y[i],nowX=X[i],nowY=Y[i];
        for(int j=i-1;j>=1;j--)
            if((x[j]<x[i] && X[j]>X[i] && y[j]<nowy && Y[j]>nowY) || (x[j]<nowx && X[j]>nowX && y[j]<y[i] && Y[j]>Y[i]))
            {
                l[i]=j;
                break;
            }
            else if(x[j]<nowx && X[j]>nowX)
            {
                int pp=(x[j]<x[i])+(X[j]>X[i]);
                if(y[j]<nowy && (pp || y[j]<y[i]))
                    nowy=max(nowy,Y[j]);
                if(Y[j]>nowY && (pp || Y[j]>Y[i]))
                    nowY=min(nowY,y[j]);
            }
            else if(y[j]<nowy && Y[j]>nowY)
            {
                int pp=(y[j]<y[i])+(Y[j]>Y[i]);
                if(x[j]<nowx && (pp || x[j]<x[i]))
                    nowx=max(nowx,X[j]);
                if(X[j]>nowX && (pp || X[j]>X[i]))
                    nowX=min(nowX,x[j]);
            }
        nowx=x[i],nowy=y[i],nowX=X[i],nowY=Y[i];
        r[i]=n+1;
        for(int j=i+1;j<=n;j++)
            if(x[j]<x[i] && X[j]>X[i] && y[j]<y[i] && Y[j]>Y[i])
            {
                r[i]=j;
                break;
            }
        v[l[i]].push_back(i);
    }
    for(int i=1;i<=q;i++)
    {
        int l,r;
        cin>>l>>r;
        Q[l].push_back({i,r});
    }
    for(int i=n;i>=1;i--)
    {
        for(auto id:v[i])
            s.erase({y[id],x[id],X[id],id,1}),s.erase({Y[id],x[id],X[id],id,0});
        s.insert({y[i],x[i],X[i],i,1});
        s.insert({Y[i],x[i],X[i],i,0});
        for(auto [id,R]:Q[i])
        {
            cnt=0;
            for(auto pp:s)
                if(pp.id<=R && r[pp.id]>R)
                    a[++cnt]=pp;
            ans[id]=solve();
        }
    }
    for(int i=1;i<=q;i++)
        cout<<ans[i]<<'\n';
    return 0;
}